home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / dev / scsiTape.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  3KB  |  97 lines

  1. /*
  2.  * scsiTape.h --
  3.  *
  4.  *    External definitions for the tape drives on the SCSI I/O bus.
  5.  *    There are several variants of tape drives and each has an
  6.  *    associated header file that defines drive-specific sense
  7.  *    data and other info.
  8.  *
  9.  * Copyright 1986 Regents of the University of California
  10.  * All rights reserved.
  11.  * Permission to use, copy, modify, and distribute this
  12.  * software and its documentation for any purpose and without
  13.  * fee is hereby granted, provided that the above copyright
  14.  * notice appear in all copies.  The University of California
  15.  * makes no representations about the suitability of this
  16.  * software for any purpose.  It is provided "as is" without
  17.  * express or implied warranty.
  18.  *
  19.  * $Header: /cdrom/src/kernel/Cvsroot/kernel/dev/scsiTape.h,v 9.4 91/09/03 19:01:35 jhh Exp $ SPRITE (Berkeley)
  20.  */
  21.  
  22. #ifndef _SCSITAPE
  23. #define _SCSITAPE
  24.  
  25. #include <sys/scsi.h>
  26. #include <scsiDevice.h>
  27. #include <dev/tape.h>
  28.  
  29. /*
  30.  * State info for an SCSI tape drive.  
  31.  */
  32. #define    SCSI_TAPE_DEFAULT_BLOCKSIZE    512
  33. /*
  34.  * State info for an SCSI tape drive.  This is used to map from a device
  35.  * unit number back to the SCSI controller for the drive.
  36.  */
  37. typedef struct ScsiTape {
  38.     ScsiDevice    *devPtr;        /* SCSI Device we have attached. */
  39.     int    type;            /* See user/dev/tape.h. */
  40.     int state;            /* State bits used to determine if it's open,
  41.                  * it it really exists, etc. */
  42.     char *name;            /* Type name of tape device. */
  43.     int blockSize;        /* Native block size of the drive. */
  44.     int minBlockSize;        /* Minimum block size for variable length
  45.                  * blocks. */
  46.     int maxBlockSize;        /* Max block size for variable length
  47.                  * blocks. */
  48.     ReturnStatus (*tapeIOProc) _ARGS_((struct ScsiTape *tapePtr, int command, 
  49.     char *buffer, int *countPtr)); /* Procedure to customize tape IO. */
  50.  
  51.     ReturnStatus (*specialCmdProc) _ARGS_((struct ScsiTape *tapePtr,
  52.            int command, int count));    /* Procedure to handle special 
  53.                          * tape cmds. */
  54.     ReturnStatus (*statusProc) _ARGS_((struct ScsiTape *tapePtr,
  55.             Dev_TapeStatus *statusPtr, Boolean *readPositionPtr));
  56. } ScsiTape;
  57.  
  58.  
  59.  
  60. /*
  61.  * Tape drive state:
  62.  *    SCSI_TAPE_CLOSED    The device file corresponding to the drive
  63.  *        is not open.  This inhibits read/writes, and allows opens.
  64.  *    SCSI_TAPE_OPEN        The device file is open.
  65.  *    SCSI_TAPE_AT_EOF    The file mark was hit on the last read.
  66.  *    SCSI_TAPE_WRITTEN    The last op on the tape was a write.  This is
  67.  *                used to write an end-of-tape mark before
  68.  *                closing or rewinding.
  69.  */
  70. #define SCSI_TAPE_CLOSED    0x0
  71. #define SCSI_TAPE_OPEN        0x1
  72. #define SCSI_TAPE_AT_EOF    0x2
  73. #define SCSI_TAPE_WRITTEN    0x4
  74.  
  75. /*
  76.  * SCSI_TAPE_DEFAULT_BLOCKSIZE the default block size for SCSI Tapes.
  77.  */
  78. #define    SCSI_TAPE_DEFAULT_BLOCKSIZE    512
  79.  
  80. extern int devNumSCSITapeTypes;
  81. extern ReturnStatus ((*devSCSITapeAttachProcs[]) _ARGS_((Fs_Device *devicePtr,
  82.     ScsiDevice *devPtr, ScsiTape *tapePtr)));
  83. /*
  84.  * Forward Declarations.
  85.  */
  86.  
  87. extern ReturnStatus DevSCSITapeError _ARGS_((ScsiDevice *devPtr,
  88.     ScsiCmd *scsiCmdPtr));
  89. extern ReturnStatus DevSCSITapeSpecialCmd _ARGS_((ScsiTape *tapePtr,
  90.     int command, int count));
  91. extern ReturnStatus DevSCSITapeVariableIO _ARGS_((register ScsiTape *tapePtr,
  92.     int command, char *buffer, int *countPtr));
  93. extern ReturnStatus DevSCSITapeFixedBlockIO _ARGS_((register ScsiTape *tapePtr,
  94.     int command, char *buffer, int *countPtr));
  95.  
  96. #endif /* _SCSITAPE */
  97.